// 获取当前用户信息API
import { NextRequest } from 'next/server';
import { UserDB } from '@/lib/mysql';
import { getCurrentUser, ApiResponse } from '@/lib/auth';

export async function GET(request: NextRequest) {
  try {
    // 从 Authorization header 或 Cookie 中获取token
    const authHeader = request.headers.get('Authorization');
    let token: string | null = null;
    
    if (authHeader && authHeader.startsWith('Bearer ')) {
      token = authHeader.substring(7);
    }
    
    // 获取当前用户（如果header中没有token，会自动从cookie中读取）
    const currentUser = getCurrentUser(token || undefined);
    if (!currentUser) {
      return ApiResponse.unauthorized('请先登录');
    }

    // 从数据库获取完整用户信息
    const user = await UserDB.findById(currentUser.userId);
    if (!user) {
      return ApiResponse.notFound('用户不存在');
    }

    // 获取用户配置
    const { queryOne } = await import('@/lib/mysql');
    const profile = await queryOne(
      `SELECT grade, school, bio FROM user_profiles WHERE user_id = ?`,
      [user.id]
    );

    // 返回用户信息（不包含密码）
    return ApiResponse.success({
      id: user.id,
      username: user.username,
      email: user.email,
      displayName: user.display_name,
      avatarUrl: user.avatar_url,
      role: user.role,
      createdAt: user.created_at,
      lastLoginAt: user.last_login_at,
      profile: profile || { grade: 1, school: null, bio: null },
    });
  } catch (error) {
    console.error('获取用户信息错误:', error);
    return ApiResponse.serverError('获取用户信息失败');
  }
}

// 不允许其他HTTP方法
export async function POST() {
  return ApiResponse.error('方法不允许', 405);
}
